package estrategiasRecomendadorAmistad;

import java.util.Map;
import java.util.Map.Entry;

import dataTransferObject.Mascota;
import dataTransferObject.Raza;
import dataTransferObject.Usuario;

public abstract class EstrategiaRazaMascotas extends
		EstrategiaMascotasCompatibles {
	
	public Double filtroRaza(Mascota posibleAmigo, Mascota usuario) {
		Double puntos = 0.0;
		
		Raza razaAmigo = posibleAmigo.getRaza();
		Raza razaUsuario = usuario.getRaza();
		
		if(razaAmigo.equals(razaUsuario)){
			puntos = 0.5;
		}
		if(razaAmigo.getTamano().equalsIgnoreCase(razaUsuario.getTamano())){
			puntos += 0.5;
		}
		return puntos;
		
	}
	
	public Double calcularAfinidad(Usuario posibleAmigo, Usuario usuario){
		Map<Mascota,Mascota> mascotas = super.mascotasAComparar(posibleAmigo, usuario);
		Double puntos = 0.0;
		
		
		for(Entry<Mascota, Mascota> parMascotas : mascotas.entrySet()){
			puntos += calcularAfinidadMascotas(parMascotas.getKey(), parMascotas.getValue());	
		}
		
		return puntos;
	}
	
	public abstract Double calcularAfinidadMascotas(Mascota usuario, Mascota posibleAmigo);


}
